1. Field of the Invention
The present invention relates, in general, to distributed computing systems, and, more particularly, to a standardized method of modeling and developing multi-tier software applications running on different servers and communicating over a network such as the Internet.
2. Relevant Background.
Enterprises continually need to extend their reach, reduce their costs, and lower their response times by providing easy-to-access services to their customers, partners, employees, and suppliers (e.g., the enterprise's clients). Typically, the enterprises utilize the Internet and other data communication networks to provide these services and to quickly communicate with their clients. The applications enterprises use to provide these services are hosted on servers and other computer devices linked to the communication network. The service applications or service system needs to combine existing enterprise information systems (EIS) with new business functions that deliver the services to a broad range of clients. The clients demand that the services are highly available to meet the needs of the global business environment, secure to protect the privacy of users and the integrity of enterprise data, and reliable and scalable to insure that business transactions are accurately and promptly processed.
For a variety of reasons, these services are generally architected as distributed applications having several tiers, including clients on the front end, data resources (e.g., EIS) on the back end, and one or more middle tiers between them where much of the application work is done. For example, the middle tiers generally implement services that integrate existing EISs with the business functions and data of business services. The middle tiers shield the client tier from the complexity of the enterprise and leverage Internet technologies to reduce user administration and training. An example of such a multi-tiered, object-oriented platform is the Java™ 2 Platform, Enterprise Edition (J2EE) architectural model which provides a component and service-based model having four tiers including a client tier, a Web tier, a business function tier (e.g., an Enterprise JavaBeans™ tier), and an enterprise information system tier (e.g., an EIS tier). The containers provide the runtime support for the application components within each tier.
While a multi-tiered environment can reduce costs and hide complexity from clients and developers, the underlying applications are inherently complex and potentially access data from a variety of sources and distribute application functionality to a variety of clients. Today's enterprises need to gain competitive advantage by quickly developing and deploying custom applications that provide unique business services. Whether the applications are internal for increasing employee productivity or external (such as those made available over the Internet) for providing specialized customer or vendor services, quick design and development of the applications are the keys to success. Additionally, the enterprise applications providing the services need to provide portability and scalability to ensure longer-term viability (e.g., the service may need to be tested as a small working prototype but be scaled up to a complete 24 by 7, enterprise-wide service that is accessible by hundreds or thousands of clients).
Unfortunately, services provided by multi-tier applications have proven difficult to properly design, architect, and develop. Creating these services requires bringing together a variety of skill sets and resources, legacy code and data. In today's heterogeneous environment, enterprise applications have to integrate services from a variety of vendors with a diverse set of application models and other standards. Industry experience shows that integrating these resources can take up to 50 percent of application development time. Some tools have been developed for use in multi-tiered environments but have not provided a standardized method for modeling and then developing multi-tier applications. For example, developers often try to build on prior development work, such as by utilizing patterns that describe common solutions to object-oriented development problems. However, patterns are only available for general problems and are typically not useful for modeling a service system for a particular implementation (possibly only providing a piece of the puzzle). The Unified Modeling Language (UML) is another tool that is often used by developers to design object-oriented software. UML is useful for providing a number of techniques for modeling a system. While providing a useful modeling notation, UML does not include any systemized framework for use of the diagrams. Consequently, individual developers, programming methodologies, and modeling software tend to use UML in a piecemeal fashion, selectively using some diagrams and ignoring others. Hence, the available development tools fail to meet the need of the industry for quickly and effectively designing multi-tier service-based systems to enable rapid development and deployment of unique business functions and services.
There remains a need for an improved method and technique for system design and development in complex, multi-tiered, object-oriented service environments. Preferably, such a method and system would provide system developers with a straightforward, intuitive way to model and develop object-oriented applications and service systems that are demonstrably well-designed and have desired and developer-selected architectural characteristics.